﻿using System;
using System.Collections.Generic;
using System.Text;

namespace TestKontrole2 {
    public class RevizorskiCiklusRepository : TestKontrole2.repozitorij.IRevizorskiCiklusRepository {
        private static RevizorskiCiklusRepository instanca = null;
        private List<RevizijskiCiklus> revizijskiCiklusi;
        private int idRevCik;

        private RevizorskiCiklusRepository() {
            revizijskiCiklusi = new List<RevizijskiCiklus>();
            idRevCik = 0;
        }

        public static RevizorskiCiklusRepository getInstanca() {
            if (instanca == null) {
                instanca = new RevizorskiCiklusRepository();
            }
            return instanca;
        }

        public string addRevizijskiCiklus(RevizijskiCiklus revCik) {
            revCik.Naziv = "RevCik" + idRevCik.ToString();
            if (!existRevizijskiCiklus(revCik.Naziv)) {
                revizijskiCiklusi.Add(revCik);
                idRevCik++;
                return revCik.Naziv;
            } else
                throw new iznimke.RCAlreadyExistException();
            
        }

        public void updateRevizijskiCiklus(RevizijskiCiklus revCik) {

            if (existRevizijskiCiklus(revCik.Naziv)) {
                RevizijskiCiklus rev = getRevizijskiCiklusByNaziv(revCik.Naziv);
                rev.OpisJediniceUzorka = revCik.OpisJediniceUzorka;
                rev.Populacija = revCik.Populacija;
                rev.Cilj = revCik.Cilj;
                rev.Datum = revCik.Datum;
            } else
                throw new iznimke.RCNotExistException();

        }

        public void removeRevizijskiCiklus(RevizijskiCiklus revCik) {

            if (existRevizijskiCiklus(revCik.Naziv)) {
                revizijskiCiklusi.Remove(revCik);
            } else
                throw new iznimke.RCNotExistException();

        }
        public bool existRevizijskiCiklus(string naziv) {
            foreach (RevizijskiCiklus item in revizijskiCiklusi)
                if (item.Naziv == naziv)
                    return true;
            return false;
        }

        public RevizijskiCiklus getRevizijskiCiklusByNaziv(string naziv) {
            if (existRevizijskiCiklus(naziv)) {
                foreach (RevizijskiCiklus item in revizijskiCiklusi) {
                    if (item.Naziv == naziv)
                        return item;
                }
            } 
            throw new iznimke.RCNotExistException();
        }
    }
}
